#ifndef _UNCOPYABLE_HPP_
#define _UNCOPYABLE_HPP_

//////////////////////////////////////////////////////////////////////////
// Private derive from this class if you don't want your class to be copyable
// Do no declare any virtual functions in this class
//
// class MyClass : private Uncopyable
// {
//     ...
// };
//////////////////////////////////////////////////////////////////////////

class Uncopyable
{
protected:
	Uncopyable() {}								// allow construction and destruction
	~Uncopyable() {}							// of derived objects

private:
	Uncopyable(const Uncopyable&);				// ... but prevent copying
	Uncopyable& operator=(const Uncopyable&);
};

#endif // _UNCOPYABLE_HPP_
